const { context } = require('esbuild');
const { resolve } = require('path');

// 打包指定的模块
const target = 'reactivity';

(async () => {
  try {
    // 创建构建上下文
    const ctx = await context({
      // 打包的入口
      entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
      
      // 输出的路径 - 注意修改为 .js 扩展名
      outfile: resolve(__dirname, `../packages/${target}/dist/${target}.js`),
      
      // 将依赖的模块全部打包到一起
      bundle: true,
      
      // 支持调试,打包源码
      sourcemap: true,
      
      // 打包出来的模块是 es6 模块
      format: 'esm',
      
      // 打包出来给那个平台用 - 给浏览器使用
      platform: 'browser',
    });
    
    // 启动监听模式
    await ctx.watch();
    console.log(`正在监听 ${target} 模块的变化...,watching~~`);
    
    // 优雅退出
    process.on('SIGTERM', () => {
      ctx.dispose();
      process.exit(0);
    });
    
    process.on('SIGINT', () => {
      ctx.dispose();
      process.exit(0);
    });
  } catch (error) {
    console.error('构建失败:', error);
    process.exit(1);
  }
})();
